# 幂运算
print(2 ** 3)  # 8

# 逻辑运算
'''
与或非，与java一样，只是使用的符号不一样
and 
or 
not 
'''
# 简单测试下
print(True and True and False) # False
print(True or False or False) # True
print(not True) # False
# 如下变态形式
print(not not not True)  # False

'''
官方解释：
（1）x or y 如果x是true，后面就不用看了，直接为x，如果x为false，还要看y的，结果为y 
（2）x and y 如果x为false，后面就不用看了，直接为x，如果x为true，还要看y的，结果为y
（3）not x 如果x为false，结果为True，否则为False
'''

# and or not 同时存在时，注意先算括号，然后是not>and>or
print("-----and or not-----")
print(3 > 4 or 4 < 3 and 1 == 1)  # False
print(1 < 2 and 3 < 4 or 1 > 2)  # True
print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1)  # True
print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)  # False
print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)  # False

# 还有如下的写法，变量写法
print("-----or-----")
print(1 or 2)  # 1
print(2 or 3)  # 2
print(0 or 4)  # 4
print(0 or 1 or 3 or 5) # 1
print("-----and-----")
print(1 and 2) # 2
print(2 and 4) # 4
print(0 and 5) # 0
print("-----组合变态写法，一般也就面试会用了-----")
print(2>3 and 4) #False
print(2<1 and 4>6 or 3 and 4>5 or 6) #6
print(1>2 and 3 or 6) #6




